/**
 * 作者：yhb
 * 时间：2011-2-18 17:10:18
 * 对象功能：用户对系统的缓存的管理的工具辅助类。
 * 包括了对于当前用户的资源树数据，还有导航栏的导航数据等。
 * */
package com.towker.frame.service.sys;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.towker.frame.model.rbac.Resource;


public class CacheHelper
{
	/**
	 * 	该类中的所有属性罗列如下：
	 * 	1. zTreeMap - 当前用户当前登录系统的资源树数据缓存。
	 *  2. navigationMap - 当前用户当前登录系统的导航栏导航数据缓存。
	 *  3. resourceListMap - 当前用户当前登录系统的资源列表数据缓存。
	 */
	
	private static Map<String, String> zTreeMap = new HashMap<String, String>();
	private static Map<String, String> navigationMap = new HashMap<String, String>();
	private static Map<String,List<Resource>> resourceListMap=new HashMap<String, List<Resource>>();
	
 
	
	/**
	 * 	往资源列表数据缓存中添加当前用户当前登录系统的资源列表数据。
	 * 	@param key - currentUserId+":"+currentSystemId(当前登录用户编号与其登录的当前系统，并且用冒号隔开)。
	 *  @param value - 当前用户登录当前系统的资源列表。
	 */
	public static void addResourceListToMap(String key,List<Resource> value)
	{
		resourceListMap.put(key, value);
	}
	
	/**
	 *  从资源列表数据缓存中取出当前用户当前登录系统的资源列表数据。
	 *  @param key - currentUserId+":"+currentSystemId(当前登录用户编号与其登录的当前系统，并且用冒号隔开)。
	 *  @return List<Resource> - 当前用户登录当前系统的资源列表。
	 */
	public static List<Resource> getResourceListFromMap(String key)
	{
		return (List<Resource>)resourceListMap.get(key);
	} 
	
	/**
	 *  释放资源列表数据缓存中当前一个当前用户当前登录系统的资源列表数据。
	 * @param key - currentUserId+":"+currentSystemId(当前登录用户编号与其登录的当前系统，并且用冒号隔开)。
	 */
	public static void clearResourceListOfMap(String key)
	{
		resourceListMap.remove(key);
	}
	
	/**
	 * 往导航数据缓存中添加当前用户当前登录系统的导航数据。
	 * @param key - currentUserId+":"+currentSystemId
	 * @param value - 当前登录用户登录当前系统的导航数据资源树json数据。
	 */
	public static void addNavigationToMap(String key, String value)
	{
		navigationMap.put(key, value);
	}

	/**
	 * 从导航数据缓存中取出当前用户当前登录系统的导航数据。
	 * @param key - currentUserId+":"+currentSystemId
	 */
	public static String getNavigationFromMap(String key)
	{
		return navigationMap.get(key);
	}

	/**
	 * 释放当前用户当前登录系统导航数据缓存中的导航数据。
	 * @param key - currentUserId+":"+currentSystemId
	 */
	public static void clearNavigationOfMap(String key)
	{
		System.out.println(navigationMap.get(key));
		navigationMap.remove(key);
	}

	/**
	 * 往资源树缓存中添加一个当前用户当前登录系统的资源树数据。
	 * @param key - currentUserId+":"+currentSystemId
	 * @param value - 当前登录用户登录当前系统的zTree形式的数据资源树json数据。
	 */
	public static void addZTreeToMap(String key, String value)
	{
		zTreeMap.put(key, value);
	}

	/**
	 * 从资源树缓存中取出一个当前用户当前登录系统的资源树数据。
	 * @param key - currentUserId+":"+currentSystemId
	 */
	public static String getZTreeFromMap(String key)
	{
		return zTreeMap.get(key);
	}

	/**
	 * 释放资源数缓存中当前一个当前用户当前登录系统的资源树数据。
	 * @param key - currentUserId+":"+currentSystemId
	 */
	public static void clearZTreeOfMap(String key)
	{
		zTreeMap.remove(key);
	}
	
	/**
	 * 释放所有的缓存。
	 * */
	public static void clearAllMaps(String key)
	{
		CacheHelper.clearResourceListOfMap(key);
		CacheHelper.clearZTreeOfMap(key);
		CacheHelper.clearNavigationOfMap(key);
	}
}
